第三方库介绍 | 您所在的位置:网站首页 › python3 夸机器 通信 高性能库 › 第三方库介绍 |
一、nanomsg介绍
NanoMsg是一个Socket的通讯库,使用C语言编写实现的,这样就可以适用于多种操作系统,而且几乎不需要什么依赖,可扩展并且能易于使用。Nanomsg提供了几种常见的通信模式 ( 也称为“可扩展性协议” ) 是构建分布式系统的基本框架。 通过组合它们,可以创建广 泛的分布式应用程序。nanomsg 高性能通信库_NanoMsg框架|NanoMsg的简介 使用nanomsg可以实现线程间通信,nanomsg库又很轻量级,对于嵌入式程序编程真的非常好用。使用nanomsg库实现多线程之间的通信(一) 可扩展性协议类型 PAIR (配对模式):简单的一对一沟通BUS (总线模式):简单的多对多通信REQREP (请求/回复模式):允许构建无状态集群来处理用户请求PUBSUB (扇入模式):将消息分发给订阅消息的用户PIPELINE (扇出模式):汇总来自多个来源的消息,并在许多目的点之间进行负载平衡SURVEY (调查模式):允许一次查询多个应用程序的状态可扩展协议是在网络通信协议之上实现的,当前版本nanomsg支持一下网络协议: INPROC:单进程内通信; IPC:单机内多进程的通信; TCP:通过tcp协议的网络通信; 参考博文:C++网络库探索(二) 二、编译与安装(x86)下载地址:nanomsg的github仓库网址 下载如下版本: 进入文件目录 cd nanomsg-1.1.4创建编译目录build,并移动到build目录 mkdir build && cd build创建x86_lib文件夹 mkdir x86_lib根据CMakeLists.txt文件,生成Makefile cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/x86_lib编译 cmake --build .测试驱动程序 ctest .ctest可执行文件是CMake测试驱动程序 使用enable_testing()和add_test()命令的项目创建的cmake生成构建树具有测试支持。此程序将运行测试并报告结果。ctest 使用教程:cmake:命令行工具ctest调用本地的构建系统执行 install 这个目标,将生成的库和头文件安装到系统上,其实就是把静态库和动态库以及头文件拷贝到系统库文件目录下,如果前面指定安装位置为build/x86_lib,至此,就可以和使用其他系统库一样,使用nanomsg库了 sudo cmake --build . --target install为了让这些由某个工程后生成的动态链接库为系统所共享,还需运行动态链接库的管理命令–ldconfig。(直接sudo ldconfig即可)。linux下面的sudo ldconfig命令 sudo ldconfig进入build/x86_lib/lib目录。查看是否有libnanomsg.so相关文件,查看生成的动态库是否是x86架构的: readelf -h libnanomsg.soLinux主机:ubuntu-18.04 交叉编译器:arm-buildroot-linux-gnueabihf 开发板kernel:Linux 5.4.0-150-generic x86_64 开发板:100ASK_STM32MP157_PRO开发板 在nanomsg根目录下的CMakeLists.txt文件里加上交叉编译器设置: 然后后输入如下命令: mkdir build && cd build mkdir arm_lib cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/arm_lib cmake --build . sudo cmake --build . --target install sudo ldconfig进入build/arm_lib/lib目录。查看是否有libnanomsg.so相关文件,查看生成的动态库是否是arm架构的: readelf -h libnanomsg.so通过编译得到的是动态库,如果需要编译为静态库调用。只要修改一下CMakeLists.txt中编译规则 四、测试与使用演示进程间通信的例子 nanomsg_server.c: #include #include #include #include #include #include #include #include #define BUF_LEN 100 char *url = "tcp://127.0.0.1:2021"; int main(void) { int server_sock = 0; char buf[BUF_LEN] = {0}; if (server_sock = nn_socket (AF_SP, NN_PAIR) |
CopyRight 2018-2019 实验室设备网 版权所有 |